/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package MPPersistencia;

import Concepto.Usuario;
import Utilidades.ManejadorBaseDatos;
import java.io.Serializable;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.LinkedList;
import java.util.List;

/**
 *
 * @author USUARIO
 */
public class MPUsuarios implements Serializable{
    static Connection con;
    static ManejadorBaseDatos mbd=ManejadorBaseDatos.getInstancia();
    
    public static Usuario getUsuario(String login,String pass) throws SQLException {
     if (login == null) {
          throw new SQLException("No hay elemento login de la clase Usuario");
     }
     if (pass == null) {
          throw new SQLException("No hay elemento password de la clase Usuario");
     }
         ResultSet rs = null;
         PreparedStatement pst = null;
         Usuario usuario = null;
     try {
         pst = con.prepareStatement("select * from Usuario where login = ? and password=?");
         pst.setString(1, login.trim());
         pst.setString(2, pass.trim());
         rs = pst.executeQuery();
         while(rs.next()) {
             usuario = Usuario.load(rs);
         }
    } finally {
         if (rs != null) {
            rs.close();
         }
         if (pst != null) {
           pst.close();
         }
          return usuario;
    }
}

   public static void registrarUsuario(Usuario usuario) throws SQLException, Exception {
    mbd.conectar();
    con=mbd.getConexion();
     if (con == null ) {
          throw new SQLException("no hay conexion" );
     }
     PreparedStatement pst = null;//hacer nula la consulata.....
     try {
          pst = con.prepareStatement("Insert Into Usuario  values(?,?,?,?)");
                   
          pst.setString(1,usuario.getLogin());
          pst.setString(2 ,usuario.getPassword());
          pst.setString(3 ,usuario.getIdcolegio());
          pst.setString(4 , usuario.getPerfil());
       
          pst.executeUpdate();
    }finally {
        if (pst != null) {
             pst.close();
        }
   }
}
public static Usuario consultarUsuario(String user) throws SQLException, Exception {
    mbd.conectar();
    con=mbd.getConexion();
   
      if (user==null ) {
          throw new SQLException("No hay elemento clave de la clase Curso");
     }
         ResultSet rs = null;
         PreparedStatement pst = null;
         Usuario usuario = null;
     try {
         pst = con.prepareStatement("select * from Usuario u where Usuario = ?");
         pst.setString(1, user);
         
         rs = pst.executeQuery();
         while(rs.next()) {

             usuario = Usuario.load(rs);
         }
    } finally {
         if (rs != null) {
            rs.close();
         }
         if (pst != null) {
           pst.close();
         }
          return usuario;
    }
}


public static boolean existeusuario(int cod) throws SQLException, Exception {
    mbd.conectar();
    con=mbd.getConexion();
      String codcurso=cod +"";
      if (codcurso==null) {

          throw new SQLException("No hay elemento clave de la clase Curso");
     }
         ResultSet rs = null;
         PreparedStatement pst = null;
         boolean curso = false;
     try {
         pst = con.prepareStatement("select u.* from Usuario u where codCurso = ?");
         pst.setInt(1, cod);

         rs = pst.executeQuery();
         while(rs.next()) {

             curso = true;
         }
    } finally {
         if (rs != null) {
            rs.close();
         }
         if (pst != null) {
           pst.close();
         }
          return curso;
    }
}
    
   public static boolean updateUsuario (Usuario usuario, String login,String pass) throws SQLException {
       if ( getUsuario(login,pass) == null) {
           throw new SQLException ("Usuario no registrado ");
       }
       PreparedStatement pst = null;
       boolean res = false;
       try {
         pst = con.prepareStatement("Update Usuario set login = ? password = ? idcolegio = ? perfil = ? imagen = ? where login = ? and password=? "); 
         pst.setString(1 , usuario.getLogin());
         pst.setString(2 , usuario.getPassword());
         pst.setString(3 , usuario.getIdcolegio());
         pst.setString(4 , usuario.getPerfil());
         pst.setString(5 , usuario.getImagen());
         pst.setString(6 , login.trim());
         pst.setString(7 , pass.trim());
         int r = pst.executeUpdate();
       if (r != 0) {
          res = true;
       }
       } finally {
          if (pst != null) {
            pst.close();
          }
       }
         return res;
 }   
   
   public static List<Usuario> listarUsuario() throws SQLException {
     ResultSet rs = null;
     PreparedStatement pst = null;
     List<Usuario>  listausuario = new LinkedList();
     try {
        pst = con.prepareStatement("select * from Usuario ");
        rs = pst.executeQuery();
        while(rs.next()) {
           listausuario.add(Usuario.load(rs));
        }
    } finally {
        if (rs != null) {
           rs.close();
       }
        if (pst != null) {
          pst.close();
       }
    }
     return listausuario;
   }

   
}
